package net.qiyuesuo.service;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;

import net.qiyuesuo.pojo.FileMeta;

/**
 * 文件服务
 *
 */
public interface FileService {
	
	/**
	 * 文件保存  输入文件为byte[]
	 * @param bytes
	 * @return 返回文件名
	 */
	String saveFile(byte [] bytes);
	
	/**
	 * 文件保存 输入文件为 InputStream 
	 * @param input 
	 * @param size
	 * @return 返回文件名
	 */
	String saveFile(InputStream input , long size);
	
	/**
	 * 文件保存 输入文件为File
	 * @param file
	 * @return 返回 文件名
	 */
	String saveFile(File file);
	
	/**
	 * 根据id 获取byte[] 类型文件
	 * @param uuid
	 * @return 文件数组
	 */
	byte[] getFileThrougnBytes(String fileKey);
	
	/**
	 * 根据id，获取outputStream文件输出流
	 * @param uuid 文件key 注意 outputStream由调用者自己关闭
	 * @return
	 */
	void getFileThrouthStream(String fileKey,OutputStream output) throws Exception;
	
	
	/**
	 * 根据uuid 获取文件信息
	 * @param uuid
	 * @return
	 */
	FileMeta getFileInfo(String fileKey) throws Exception;
	
	/**
	 * 根据uuid 删除文件
	 * @param uuid 
	 */
	void deleteFile(String fileKey);
	
}
